#ifndef __Collections_LinkedListNode_H__
#define __Collections_LinkedListNode_H__

///<summary>
/// LinkedListNode<T>
///</summary>
#define Collections_LinkedListNode(T) bindT(Collections_LinkedListNode,T)
#define Declare_Collections_LinkedListNode(T, Ti) \
	struct _Collections_LinkedList_##T; \
	public classT(Collections_LinkedListNode,T,System_Object,, \
		public Ti Value; \
		public struct _Collections_LinkedList_##T *List; \
		public struct _Collections_LinkedListNode_##T *Next; \
		public struct _Collections_LinkedListNode_##T *Prev; \
	}; \
	Declare_CtorT(,public,Collections_LinkedList,T, Ti value) \
	Declare_CtorT(2,internal,Collections_LinkedList,T, struct _Collections_LinkedList_##T *list, Ti value)
#define Implement_Collections_LinkedListNode(T, Ti) \
	Implement_TypeT(Collections_LinkedListNode,T,System_Object,) \
	Implement_CtorT(,Collections_LinkedListNode,T, \
		baseCtor(,t,System_Object); \
		t->Value = value; \
	, Ti value) \
	Implement_CtorT(2,Collections_LinkedListNode,T, \
		baseCtor(,t,System_Object); \
		t->List = list; \
		t->Value = value; \
	, struct _Collections_LinkedList_##T *list, Ti value)

#endif /* __Collections_LinkedListNode_H__ */
